Computer systems may routinely perform tasks and complete work orders. For example, processors may execute instructions to read, write, and copy memory entries, according to an assigned task or work order. Tasks may typically be added to a work queue and completed on a first-in-first-out (“FIFO”) basis or a last-in-first-out (“LIFO”) basis.
The processors may use threads to complete tasks or work orders. Physical resources, such as a hardware thread, may be associated with a processing core. For example, there may be a single hardware thread per core on a processor. When there are more software threads (e.g., threads created by an application or a program), an operating system may schedule the software threads.
A software thread, which may be referred to as a thread of execution (or simply a thread) is a software unit. In a multi-processor/multi-core system, multiple threads can be executed in parallel. That is, each of the processors or cores may execute a thread simultaneously. One thread can pass a request to another thread to cause the request to be executed.